package UILayer;
import java.util.Scanner;
import controlLayer.*;
/**
 * Brugergrænseflade klasse til AdresseBog.
 * 
 * @author Gruppe 2 
 * @version 1.0
 */
public class AdresseBogUI
{
    // instance variables - replace the example below with your own
    private AdresseBogCTR AdresseBogCtr;

    /**
     * Constructor for objekter af klassen AdresseBogUI.
     */
    public AdresseBogUI()
    {
        AdresseBogCtr = new AdresseBogCTR();
    }

    /**
     * En metode der starter AdresseBog menu
     */
    public void start()
    {
        adresseBogMenu();
    }

    /**
     * En metode der indeholder funktioner til de forskellige valg i menuen
     */
    public void adresseBogMenu()
    {
        boolean exit = false;
        while(!exit)
        {
            int choice = writeAdresseBogMenu();
            if(choice !=1 && choice !=2 && choice !=3 && choice !=4 && choice != 5 && choice != 6)
            {
                System.out.println("Du skal enten vælge 1, 2, 3, 4, 5, eller 6");
            }
            if (choice == 1)
            {
                findKunde();
            }
            else{if(choice == 2){
                    opretKunde();
                }
                else{
                    if(choice == 3){
                        opdaterKunde();
                    }
                    else{
                        if(choice == 4){
                            sletKunde();
                        }
                        else{
                            if(choice == 5){
                                listAllKunder();
                            }
                            else{
                                if(choice == 6)
                                {
                                    exit = true;
                                }
                            }//end else
                        }//end else
                    }//end else
                }//end else
            }//end else
        }//end while
    }

    /**
     * En metode der printer oplysninger om de forskellige valg i menuen
     * @return int choice
     */
    private int writeAdresseBogMenu()
    {
        // creates an object keyboard to read data from the keyboard
        Scanner keyboard = new Scanner(System.in);
        System.out.println(" *** AdresseBog Menu ***");
        System.out.println(" (1) Vis Kunde informationer");
        System.out.println(" (2) Opret Kunde");
        System.out.println(" (3) Opdater Kunde");
        System.out.println(" (4) Slet Kunde");
        System.out.println(" (5) Vis kunde register");        
        System.out.println(" (6) Gå til hovedmenu");
        System.out.print("\n Tag dit valg: ");

        int choice = 0;
        boolean ok = false;
        while(!ok)
        {
            try
            {
                choice = keyboard.nextInt();
                ok = true;
            }
            catch (Exception e)
            {
                System.out.println("Skriv kun tal - prøv igen");
                String input = keyboard.nextLine();
            }

        }//end while
        return choice;
    }

    /**
     * En metode til indtastning af en kundes cpr-nr. Metoden returnere cpr-nr. til brug 
     * i andre metoder
     * @param String cprNr
     * @return String cprNr
     */
    private String inputCprNr()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens cprnr: ");
        String cprNr = keyboard.nextLine();
        return cprNr;
    }
    
        /**
     * En metode til indtastning af en kundes ny cpr-nr. Metoden returnere et ny cpr-nr. 
     * til brug i andre metoder
     * @param String nyCprNr
     * @return Strong nyCprNr
     */
    private String inputNyCprNr()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens cprnr: ");
        String nyCprNr = keyboard.nextLine();
        return nyCprNr;
    }

    /**
     * En metode til indtastning af en kundes navn. Metoden returnere navnet til brug 
     * i andre metoder
     * @param String navn
     * @return String navn
     */
    private String inputNavn()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens navn: ");
        String navn = keyboard.nextLine();
        return navn;
    }

    /**
     * En metode til indtastning af en kundes adresse. Metoden returnere adressen 
     * til brug i andre metoder
     * @param String adresse
     * @return String adresse
     */
    private String inputAdresse()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens adresse: ");
        String adresse = keyboard.nextLine();
        return adresse;
    }

    /**
     * En metode til indtastning af en kundes postnr. Metoden returnere postnr. 
     * til brug i andre metoder
     * @param int postNr
     * @return int postNr
     */
    private int inputPostNr()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens Post Nummer: ");
        int postNr = 0;
        boolean ok = false;
        while(!ok)
        {
            try
            {
                postNr = keyboard.nextInt();
                ok = true;
            }
            catch (Exception e)
            {
                System.out.println("Skriv kun tal - prøv igen");
                String input = keyboard.nextLine();
            }

        }//end while
        return postNr;
    }

    /**
     * En metode til indtastning af en kundes by. Metoden returnere byen 
     * til brug i andre metoder
     * @param String by
     * @return String by
     */
    private String inputBy()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens by: ");
        String by = keyboard.nextLine();
        return by;
    }

    /**
     * En metode til indtastning af en kundes telefonnr. Metoden returnere telefonnr. 
     * til brug i andre metoder
     * @param String telefon
     * @return String telefon
     */
    private String inputTelefon()
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Skriv kundens telefon: ");
        String telefon = keyboard.nextLine();
        return telefon;
    }

    /**
     * En metode der finder en kunde via cpr-nr
     * @param String cprNr
     */
    private void findKunde()
    {
        String cprNr = inputCprNr();
        AdresseBogCtr.findKunde(cprNr);
    }

    /**
     * En metode der opretter en kunde
     * @param String cprNr
     * @param String navn
     * @param String adresse
     * @param int postNr 
     * @param String by
     * @param String telefon
     */
    private void opretKunde()
    {
        String cprNr = inputCprNr();
        String navn = inputNavn();
        String adresse = inputAdresse();
        int postNr = inputPostNr();
        String by = inputBy();
        String telefon = inputTelefon();
        AdresseBogCtr.opretKunde(cprNr, navn, adresse, postNr, by, telefon);
    }

    /**
     * En metode der finder en kunde via cpr-nr. og opdaterer oplysningerne for kunden
     * @param String cprNr
     * @param String nyCprNr
     * @param String navn
     * @param String adresse
     * @param int postNr 
     * @param String by
     * @param String telefon
     */
    private void opdaterKunde()
    {
        String cprNr = inputCprNr();
        String nyCprNr = inputNyCprNr();
        String navn = inputNavn();
        String adresse = inputAdresse();
        int postNr = inputPostNr();
        String by = inputBy();
        String telefon = inputTelefon();
        AdresseBogCtr.opdaterKunde(cprNr, nyCprNr, navn, adresse, postNr, by, telefon);
    }

    /**
     * En metode der finder en kunde via cpr-nr. og fjerner kunden i systemet
     * @param String cprNr
     */
    private void sletKunde()
    {
        String cprNr = inputCprNr();
        AdresseBogCtr.sletKunde(cprNr);
    }

    /**
     * En metode der printer alle kunder i systemet
     */
    private void listAllKunder()
    {
        System.out.println(AdresseBogCtr.printAdressebog()+"\n");
    }
}
